package wifiunion.com.notice.utils.glideutils;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;

import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;

/**
 * 图片灰化
 */
public class GlideAshingTransform extends BitmapTransformation {
    public GlideAshingTransform(Context context) {
        super(context);
    }

    @Override
    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        return circleCrop(pool, toTransform);
    }

    private static Bitmap circleCrop(BitmapPool pool, Bitmap source) {
        if (source == null) return null;

//        int size = Math.min(source.getWidth(), source.getHeight());
//        int x = (source.getWidth() - size) / 2;
//        int y = (source.getHeight() - size) / 2;
//
//        // TODO this could be acquired from the pool too
//        Bitmap squared = Bitmap.createBitmap(source, x, y, size, size);
//
//        Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);
//        if (result == null) {
//            result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
//        }
//
//        Canvas canvas = new Canvas(result);
//        Paint paint = new Paint();
//        paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
//        paint.setAntiAlias(true);
//        float r = size / 2f;
//        canvas.drawCircle(r, r, r, paint);
        
        Bitmap result = source;
        Canvas mCanvas = new Canvas(result);  
        Paint mPaint = new Paint();  
          
        //创建颜色变换矩阵  
        ColorMatrix mColorMatrix = new ColorMatrix();  
        //设置灰度影响范围  
        mColorMatrix.setSaturation(0);  
        //创建颜色过滤矩阵  
        ColorMatrixColorFilter mColorFilter = new ColorMatrixColorFilter(mColorMatrix);  
        //设置画笔的颜色过滤矩阵  
        mPaint.setColorFilter(mColorFilter);  
        //使用处理后的画笔绘制图像  
        mCanvas.drawBitmap(result, 0, 0, mPaint);  
        
        
        
        
        return result;
    }

    @Override
    public String getId() {
        return getClass().getName();
    }
}
